/*
 * Copyright (c) 2025 CAX Conversion Project
 */
package com.comac.ins.isfd.service;

import com.comac.ins.common.mybatis.core.page.PageQuery;
import com.comac.ins.common.mybatis.core.page.TableDataInfo;
import com.comac.ins.isfd.domain.bo.IsfdAnalysisParameterConfigBo;
import com.comac.ins.isfd.domain.bo.query.IsfdAnalysisParameterConfigQueryBo;
import com.comac.ins.isfd.domain.bo.IsfdOperatorParameterConfigBo;
import com.comac.ins.isfd.domain.bo.query.IsfdOperatorParameterConfigQueryBo;
import com.comac.ins.isfd.domain.vo.*;
import jakarta.servlet.http.HttpServletResponse;

import java.util.Collection;
import java.util.List;

/**
 * 参数库service接口层
 *
 * @author hxloongs
 * @date 2024-7-15
 */
public interface IIsfdParameterConfigService {


    /**
     * 非常建议在 AnalysisParameterConfig 实体类中新增两个字段 analysisType 和 operatorName
     * 从业务角度这两个字段在主集合中 是不可修改的，具有唯一性，冗余到参数集合中提供给查询检索使用
     * 该接口用作 刷数据
     */
    Boolean buildParameterConfigAnalysisTypeAndOperatorName();


    /**
     * 算法和算子参数首页统计查询接口
     */
    List<IsfdParameterConfigCountObjectVo> listCount();

    /**
     * 算法参数配置分页列表接口
     */
    TableDataInfo<IsfdAnalysisParameterConfigVo> getParameterConfigAnalysisPageList(IsfdAnalysisParameterConfigQueryBo queryBo);

    /**
     * 算法参数配置添加
     */
    Boolean parameterConfigAnalysisAdd(IsfdAnalysisParameterConfigBo isfdAnalysisParameterConfigBo);

    /**
     * 算法参数配置算法修改
     */
    Boolean parameterConfigAnalysisUpdate(IsfdAnalysisParameterConfigBo isfdAnalysisParameterConfigBo);

    /**
     * 算法参数配置删除
     */
    Boolean parameterConfigAnalysisRemove(Collection<String> parameterConfigIds);


    /**
     * 算子参数构建自定义配置字段并初始化赋值
     * customJsonField 自定义字段为拓展字段，作用：
     * 1. 兼容合并老数据的 text_list、title、options三类json数据，到该字段中
     * 2. 完全的支持自定义，后续自定义字段用该字段即可
     */
    Boolean buildCustomJsonField();

    /**
     * 算子参数配置分页查询
     */
    TableDataInfo<IsfdOperatorParameterConfigVo> queryPageParameterConfigOperatorList(IsfdOperatorParameterConfigQueryBo queryBo);

    /**
     * 左侧菜单算子参数配置path树结构接口
     */
    IsfdOperatorParameterConfigPathTreeVo queryPageParameterConfigOperatorPathTree();

    /**
     * 算子参数配置新增
     */
    Boolean parameterConfigOperatorAdd(IsfdOperatorParameterConfigBo isfdOperatorParameterConfigBo);

    /**
     * 算子参数配置修改
     */
    Boolean parameterConfigOperatorUpdate(IsfdOperatorParameterConfigBo isfdOperatorParameterConfigBo);

    /**
     * 算子参数配置删除
     */
    Boolean parameterConfigOperatorRemove(Collection<String> operatorParameterConfigIds);


    /**
     * 获取算法对应的所有算子列表
     */
    List<IsfdOperatorNameVo> getAnalysisOperatorList(String analysisRefId);


    /**
     * 获取当前算子已经配置映射关系的参数信息列表
     */

    TableDataInfo<IsfdOperatorMapParameterVo> getConfigRelatedOperatorMap(String operatorRefId, String analysisRefId, PageQuery pageQuery);

    /**
     * 查询算仔细的所有fieldId
     */
    List<IsfdOperatorParameterConfigVo> getFieldIdList(String operatorRefId);


    /***
     * 算子参数导出
     */
    void exportParameterConfigOperator(IsfdOperatorParameterConfigQueryBo queryBo,
                                       HttpServletResponse response);

    /**
     * 查询算子
     * 作为以判断或者详情
     */
    IsfdOperatorParameterConfigVo one(String operatorRefId, String path, String type, String fieldId, String fieldType);
}
